#include "widget.h"
#include "ui_widget.h"
#include <QTimer>  //定时器的类
#include <QDebug>
#include <QMouseEvent>

Widget::Widget(QWidget *parent) :
    QLabel(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //启动定时器
    //参数1 间隔时间 单位 毫秒
    id1 = startTimer(1000);
    id2 = startTimer(2000);


    //定时器第二种方法
    QTimer * timer = new QTimer(this);
    //启动定时器   0.5秒间隔
    timer->start(500);
    connect(timer,&QTimer::timeout,[=]()
    {
        static int num3 = 1;
        ui->label_4->setText(QString::number(num3 ++));
    });


    //点击暂停按钮  停止计时器
    connect(ui->pushButton,&QPushButton::clicked,[=]()
    {
        timer->stop();
    });

    //用事件过滤器进行拦截
    //第一步为控件安装事件过滤器
    ui->label->installEventFilter(this);
}

//第二步重写eventFilter事件
bool Widget::eventFilter(QObject * obj,QEvent * e)
{
    //拦截鼠标按下操作
    if(obj == ui->label)
    {
        if(e->type() == QEvent::MouseButtonPress)
        {
            //进行类型转换
            QMouseEvent * ev = static_cast<QMouseEvent * >(e) ;
            QString str = QString("eventFilter鼠标按下 x= %1  y= %2  globalx = %3   globaly= %4  ").arg(ev->x())
                    .arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
            qDebug()<<str;
            return true; //true代表用户自己处理这个事件
        }
    }
    //其他控件默认处理
    return QWidget::eventFilter(obj,e);
}

void Widget::timerEvent(QTimerEvent *ev)
{
    if(ev->timerId()==id1)
    {
        static int num = 1;
        //label2  每1秒+1
        ui->label_2->setText( QString::number(num++) );
    }

    if(ev->timerId()==id2)
    {
        //label3  每2秒+1
        static int num2 = 1;
        ui->label_3->setText(QString::number(num2++));
    }
}

Widget::~Widget()
{
    delete ui;
}
